package com.ambow.common.utils;

import com.ambow.apimodel.common.CeatShFileVo;
import lombok.extern.log4j.Log4j;

import java.io.*;

/**
 * @author 周志伟
 * @projectname 项目名称: ${project_name}
 * @classname: creatShFile
 * @description:
 * @date 2019/4/3：9:32
 */
@Log4j
public class CeatShFile{
        private static String filenameTemp;


        /**
         * 创建文件
         *
         * @throws IOException
         */
        public static String creatTxtFile(CeatShFileVo ceatShFileVo) throws IOException {
            String path=System.getProperty("java.io.tmpdir")+System.currentTimeMillis();
            File pathdir = new File(path);
            if (!pathdir.exists()){
                pathdir.mkdir();
                log.info("创建脚本临时目录Success："+path);
            }
            filenameTemp = path +"\\"+ ceatShFileVo.getShfilename() + "."+ceatShFileVo.getSuffix();
            log.info("生成脚本临时文件目录："+filenameTemp);
            File filename = new File(filenameTemp);
            if (!filename.exists()) {
                filename.createNewFile();
                log.info("创建脚本文件Success："+path);
                writeTxtFile(ceatShFileVo.getText());
            }

            return filenameTemp;
        }

        /**
         * 写文件
         *
         * @param newStr
         *            新内容
         * @throws IOException
         */
        public static boolean writeTxtFile(String newStr) throws IOException {
            // 先读取原有文件内容，然后进行写入操作
            boolean flag = false;
            String filein = newStr + "\r\n";
            String temp = "";
            FileInputStream fis = null;
            InputStreamReader isr = null;
            BufferedReader br = null;
            FileOutputStream fos = null;
            PrintWriter pw = null;
            try {
                // 文件路径
                File file = new File(filenameTemp);
                // 将文件读入输入流
                fis = new FileInputStream(file);
                isr = new InputStreamReader(fis);
                br = new BufferedReader(isr);
                StringBuffer buf = new StringBuffer();

                // 保存该文件原有的内容
                for (int j = 1; (temp = br.readLine()) != null; j++) {
                    buf = buf.append(temp);
                    // System.getProperty("line.separator")
                    // 行与行之间的分隔符 相当于“\n”
                    buf = buf.append(System.getProperty("line.separator"));
                }
                buf.append(filein);

                fos = new FileOutputStream(file);
                pw = new PrintWriter(fos);
                pw.write(buf.toString().toCharArray());
                pw.flush();
                flag = true;
                log.info("sh脚本写入Success");
            } catch (IOException e1) {
                // TODO 自动生成 catch 块
                throw e1;
            } finally {
                if (pw != null) {
                    pw.close();
                }
                if (fos != null) {
                    fos.close();
                }
                if (br != null) {
                    br.close();
                }
                if (isr != null) {
                    isr.close();
                }
                if (fis != null) {
                    fis.close();
                }
            }
            return flag;
        }
}
